]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
status/bluetooth: Expose adapter-state
authorFlorian Müllner <fmuellner@gnome.org>
Tue, 23 Aug 2022 14:30:32 +0000 (16:30 +0200)
committerMarge Bot <marge-bot@gnome.org>
Sat, 3 Sep 2022 15:05:57 +0000 (15:05 +0000)
GnomeBluetooth now exposes a more precise state than the binary
"adapter fully powerered on/off" property. Expose that on the
BtClient object to make it available to the toggle and indicator.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5773

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2444>

js/ui/status/bluetooth.js

index f0a69238091b30b066f3f2c5f7b56f89cb6b2487..9580e7b4c7d87105ffcc55bd3b93d24f658f6e76 100644 (file)
@@ -7,6 +7,8 @@ const {QuickToggle, SystemIndicator} = imports.ui.quickSettings;
 
 const {loadInterfaceXML} = imports.misc.fileUtils;
 
+const {AdapterState} = GnomeBluetooth;
+
 const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill';
 const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill';
 
@@ -23,6 +25,9 @@ const BtClient = GObject.registerClass({
         'active': GObject.ParamSpec.boolean('active', '', '',
             GObject.ParamFlags.READABLE,
             false),
+        'adapter-state': GObject.ParamSpec.enum('adapter-state', '', '',
+            GObject.ParamFlags.READABLE,
+            AdapterState, AdapterState.ABSENT),
     },
     Signals: {
         'devices-changed': {},
@@ -38,6 +43,8 @@ const BtClient = GObject.registerClass({
             this.notify('active');
             this.notify('available');
         });
+        this._client.connect('notify::default-adapter-state',
+            () => this.notify('adapter-state'));
         this._client.connect('notify::default-adapter', () => {
             const newAdapter = this._client.default_adapter ?? null;
 
@@ -95,6 +102,10 @@ const BtClient = GObject.registerClass({
         return this._client.default_adapter_powered;
     }
 
+    get adapter_state() {
+        return this._client.default_adapter_state;
+    }
+
     toggleActive() {
         this._proxy.BluetoothAirplaneMode = this.active;
         if (!this._client.default_adapter_powered)